/*
 * 使用 Object.create 方法创建实例 
 */

// 根据参数所给定原型创建新的实例
// Object.create( prototype )

// 隐式创建了Object类的一个实例
let p = {
    id: 1001 ,
    name: '岳飞' ,
    gender: '靓仔' ,
    introduce(){
        console.log( this.id , this.name , this.gender );
    }
}

console.log( p );

// 以 p 所指向的实例为原型 创建新的实例
let x = Object.create( p );
x.name = '岳云' ;
console.log( x );
console.log( x.id , x.name , x.gender );

console.log( Object.getPrototypeOf( x ) === p ); // true
console.log( x.__proto__ === p ); // true

let names = Object.getOwnPropertyNames( x );
console.log( names ); // 这个数组中仅包含自有属性(不包含从原型继承的属性)

console.log( '- - - - - - - - - - - -' );

// 创建一个没有原型的纯对象(instance-level)
let pure = Object.create( null );
console.log( pure );
console.log( pure.__proto__ ); // undefined

pure.name = '特仑苏' ;
console.log( pure );

console.log( pure instanceof Object ); // false